package com.example.myDesignPatterns.结构型模式.适配器模式Adapter;

import java.util.concurrent.FutureTask;

public class explain {
    /**
     * 适配器模式：
     *
     * 将接口转换成另一个接口
     * 使原本由接口不兼容而不能一起工作的类能一起工作
     */
    /**
     * 5.2.2 结构
     * 适配器模式（Adapter）包含以下主要角色：
     * 目标（Target）接口：当前系统业务所期待的接口，它可以是抽象类或接口。
     * 适配者（Adaptee）类：它是被访问和适配的现存组件库中的组件接口。
     * 适配器（Adapter）类：它是一个转换器，通过继承或引用适配者的对象，把适配者接口转换成
     * 目标接口，让客户按目标接口的格式访问适配者。
     */
    /**
     * 适配器模式分为
     * 类适配器模式，
     * 对象适配器模式，
     * 前者类之间的耦合度比后者高，
     * 且要求程序员了解现有组件库中的相关组件的内部结构，
     * 所以应用相对较少些。
     */

    /**
     * 对象适配器模式和类适配器模式都是适配器模式的变体，它们都用于使现有类的接口与另一个接口兼容。尽管它们的目标相同，但实现方式有所不同：
     * 对象适配器模式
     * 基于组合：对象适配器模式通过组合（即持有Adaptee的一个实例）来实现适配，而不是通过继承。
     * 更灵活：由于它是通过组合实现的，因此可以适配多个不同的Adaptee类，只要它们提供了适配器所需的接口。
     * 易于扩展：可以很容易地通过添加新的适配器类来支持新的Adaptee类，而不需要修改现有的适配器类。
     * 重用代码：对象适配器可以重用Adaptee的所有功能，而不仅仅是那些通过继承公开的方法。
     * 动态性：对象适配器可以动态地改变其Adaptee，这在运行时根据需要选择不同的实现时非常有用。
     *
     * 类适配器模式
     * 基于继承：类适配器模式通过继承Adaptee类来实现适配，适配器类既是Adaptee的子类也是Target接口的实现。
     * 静态绑定：一旦适配器类被定义，它就静态地绑定了Adaptee类，这意味着如果需要适配不同的Adaptee，必须创建一个新的适配器类。
     * 重写方法：类适配器可以重写Adaptee中的方法，这使得它可以改变Adaptee的行为，而不仅仅是简单地转发调用。
     * 单一职责原则：类适配器模式可能违反单一职责原则，因为它将适配逻辑与Adaptee的业务逻辑混合在一起。
     * 示例对比
     */
}
